iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
DevOps

DevOps需要的技能樹...(應該)都點得到!系列 第 2

Day 2: Docker 基本概念與安裝指南

  • 分享至 

  • xImage
  •  

本章節「Docker」概要

Day 2: Docker 基本概念與安裝指南
Day 3: Dockerfile 語法解析與實踐
Day 4: 如何使用 Docker Compose 管理多容器應用程式

Docker 的起源

Docker 於 2013 年由 Solomon Hykes 和他的團隊在 Dotcloud(後來更名為 Docker Inc.)推出。它基於早期的容器技術,如 LXC(Linux Containers),並簡化了這些技術的使用,使容器化變得更加普及和便捷。Docker 迅速獲得了開發者和企業的青睞,因其能夠提供一致的運行環境,減少了“在我機器上正常工作”的問題。

https://ithelp.ithome.com.tw/upload/images/20240803/20168384MNGzdavuQs.jpg

Docker 的原理

Docker 容器是基於 Linux 容器技術構建的,其核心概念包括映像檔(Image)、容器(Container)、和 Docker 引擎(Docker Engine)。

映像檔 (Image):Docker 映像檔是一個唯讀模板,其中包含應用程式所需的一切,從代碼到運行環境(如特定版本的操作系統、依賴庫等)。映像檔是靜態的,而容器則是這些映像檔的運行時實例。

容器 (Container):容器是映像檔的運行時實例,它與主機共享操作系統內核,但運行在自己的隔離環境中。這意味著每個容器可以擁有自己的網絡接口、文件系統、和進程空間。容器可以快速啟動和停止,並且資源開銷非常低,因為它們不需要整個操作系統。

Docker 引擎 (Docker Engine):這是 Docker 的核心組件,負責管理容器的創建、運行和監控。Docker 引擎可以在本地伺服器或雲端環境中運行,並通過 Docker 的 API 與外部進行交互。

Docker 還依賴於 Linux 核心的 cgroups 和 namespaces 技術。cgroups 允許 Docker 限制容器的資源使用(如 CPU、內存),而 namespaces 則提供了進程、網絡、和文件系統的隔離。這些技術共同確保了 Docker 容器的高效性與安全性。

Docker 的應用

  • 開發和測試:Docker 提供一致的開發環境,解決了應用在不同環境中運行的問題。
  • CI/CD:Docker 支持自動化構建、測試和部署,提高交付速度。
  • 微服務架構:容器化微服務使擴展和維護變得靈活。
  • 雲環境:Docker 容器可在各大雲平台上運行,支持多雲環境中的一致性和可移植性。

安裝Docker

這裡採用官方安裝腳本
最新腳本已包含docker-compose指令,不需要再額外安裝!

#下載腳本
curl -fsSL https://get.docker.com -o get-docker.sh
#執行腳本
sudo sh get-docker.sh
  • 設定非root用戶也可以操作docker
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo usermod -aG docker $USER
newgrp docker 
  • 設定日誌
#開啟編輯器
sudo nano /etc/docker/daemon.json

貼入以下內容

{
  #如果有自架的映像檔倉庫則需加入白名單
  "insecure-registries":["192.168.10.1:80","192.168.10.2:80"],
  #配置系統日誌格式及最大保存
  "log-driver": "json-file",
  "log-opts": {"max-size": "10m", "max-file": "2"}
}

關於映像檔倉庫(image server)在下一篇會說明
預設是Docker hub,註冊即可用
若有自架例如:harbor,則需要將harbor的host ip/domain加入白名單

  • 重啟docker
sudo systemctl restart docker
  • 測試是否運行
sudo systemctl status docker
  • 測試驗證docker成功安裝
sudo docker run --rm hello-world

https://ithelp.ithome.com.tw/upload/images/20240803/20168384CZshYzvmk1.jpg

  • 測試docker指令
docker ps

參考資源:
Docker官網


上一篇
Day1: 前言+大綱
下一篇
Day 3: Dockerfile 語法解析與實踐
系列文
DevOps需要的技能樹...(應該)都點得到!25
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言